package com.albaba.designpattern.composite.text_001;

import java.util.ArrayList;

/**
 * @Description: 树枝节点类是一个容器对象，它既可以包含叶子节点，也可以包含其他树枝节点
 * @Author zx
 * @Date 2025/2/21 14:37
 * @Version 1.0
 */
public class Composite extends Component{

    // 定义集合属性，保存字节点的数据
    private ArrayList<Component> list = new ArrayList<>();

    @Override
    public void add(Component component) {
        list.add(component);
    }

    @Override
    public void remove(Component component) {
        list.remove(component);
    }

    @Override
    public Component getChild(int index) {
        return list.get(index);
    }

    @Override
    public void operation() {
        // 遍历集合，依次调用每个节点的operation方法
        for (Component component : list) {
            component.operation();
        }
    }
}
